package mx.com.matersys.vacs.web;

import java.util.Date;
import java.util.List;

import mx.com.matersys.vacs.domain.Estatus;
import mx.com.matersys.vacs.domain.Mensajes;
import mx.com.matersys.vacs.domain.Paciente;
import mx.com.matersys.vacs.domain.UserVacs;
import mx.com.matersys.vacs.utils.Constantes;
import mx.com.matersys.vacs.utils.JsonSerializer;

import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.roo.addon.web.mvc.controller.RooWebScaffold;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;



@RooWebScaffold(path = "mensajeses", formBackingObject = Mensajes.class)
@RequestMapping("/mensajeses")
@Controller
public class MensajesController {
	

		
	   @RequestMapping(value = "/guardaMensaje", method = RequestMethod.POST)
	    public ResponseEntity<java.lang.String> guardaMensaje(@RequestParam(value = "editorDeMensaje", required = false) String editorDeMensaje, 
				  @RequestParam(value = "receptor", required = false) Integer receptor, 
				  @RequestParam(value = "transmisor", required = false) Integer transmisor, 
				  @RequestParam(value = "titulomensaje", required = false) String titulomensaje,
				  @RequestParam(value = "isimportante", required = false) boolean isimportante,
				  @RequestParam(value = "isespecialistatransm", required=false) boolean isespecialistatransm) {

		   Mensajes mensaje = new Mensajes();
		   Estatus estatus = new Estatus();
		   estatus.setIdestatus(Constantes.ESTATUS_MENSAJE.MENSAJE_NO_LEIDO.getIdEstatus());
		   mensaje.setIdestatus(estatus);
		   mensaje.setIsespecialistatransm(isespecialistatransm);
		   mensaje.setIsimportante(isimportante);
		   mensaje.setIsleido(false);
		   mensaje.setMensaje(editorDeMensaje);
		   mensaje.setReceptor(receptor);
		   mensaje.setTransmisor(transmisor);
		   mensaje.setTitulomensaje(titulomensaje);
		   mensaje.setFechaEnvio(new Date());
		   
		   mensaje.persist();
		   
		  
		   	HttpHeaders headers = new HttpHeaders();

		   	headers.set("Content-Type", "text/html");
	        headers.add("Content-Type", "application/text; charset=utf-8");
	        
	        //String json = Paciente.toJsonArray(listP);
	        return new ResponseEntity<String>("true", headers, HttpStatus.OK);

	   }
	    @RequestMapping(value = "/consultaMensajesAlPaciente", method = RequestMethod.GET, headers = "Accept=application/json")
	    @ResponseBody
	    public ResponseEntity<java.lang.String> consultaMensajesAlPaciente(@RequestParam(value = "isespecialistatransm", required = false) Short isespecialistatransm) {

		   System.out.println("En consultaMensajes al paciente.....");
		   Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();
	        String username=null;
	        if (principal instanceof UserDetails) {
	            username = ((UserDetails)principal).getUsername();
	        } else {
	            username = principal.toString();
	        }
	        UserVacs user =null;
	        if(username!=null){
	        	 user = UserVacs.findUserVacs(username);
	        }
	        String json=null;
	        if(user != null){
	        	List<Mensajes> mjesList = Mensajes.findMensajesToUser(user.getIdusuario(), isespecialistatransm);
	        	json = JsonSerializer.serialize(mjesList, List.class);
	        }
	        
		   
		  
		   	HttpHeaders headers = new HttpHeaders();

		   	headers.set("Content-Type", "text/html");
	        headers.add("Content-Type", "application/text; charset=utf-8");
	        
	        return new ResponseEntity<String>(json, headers, HttpStatus.OK);
	   }


	    @RequestMapping(value = "/hasNewMessagesPaciente", method = RequestMethod.GET, headers = "Accept=application/json")
	    @ResponseBody
	    public ResponseEntity<java.lang.String> hasNewMessagesPaciente( @RequestParam(value = "isespecialistatransm", required = false) Short isespecialistatransm) {

		   System.out.println("En consultaMensajes al paciente.....");
		   Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();
	        String username=null;
	        if (principal instanceof UserDetails) {
	            username = ((UserDetails)principal).getUsername();
	        } else {
	            username = principal.toString();
	        }
	        UserVacs user =null;
	        if(username!=null){
	        	 user = UserVacs.findUserVacs(username);
	        }
	        
	        String json=null;
	        if(user != null){
	        	Integer numOfMessages = Mensajes.findNumOfMensajesToUser(user.getIdusuario(), isespecialistatransm);
	        	json = JsonSerializer.serialize(numOfMessages, Integer.class);
	        }
	        
		   
		  
		   	HttpHeaders headers = new HttpHeaders();

		   	headers.set("Content-Type", "text/html");
	        headers.add("Content-Type", "application/text; charset=utf-8");
	        
	        return new ResponseEntity<String>(json, headers, HttpStatus.OK);
	   }
	    
}


